昨天介紹到了 STM32 的強大生態系,而今天要先簡單介紹 STM32 不同的產品線,以及到底在這個專案會選擇使用什麼作為開發目標晶片。
STM32 系列基於不同的 Cortex-M 核心有以下不同產品線:
更詳細可以參考下圖(出自 STMicroelectronics 官網)
這邊介紹一下 STM32U5 系列的核心以及 B-U585I-IOT02A 這塊開發板究竟有什麼特別的功能。
首先,STM32U585 是基於 ARM Cortex-M33 系列的核心,基於 ARM M 系列最新的 ARM-v8M 指令集。
其中,B-U585I-IOT02A Discovery Kit 包含了以下不同的功能模組:
等...(實際上還有其他不少的功能,但我僅先列出接下來很有可能會用到的幾個功能項目)
但不只是以上這些方便的外設硬體,U585晶片還有不少很適合這次 EdgeAI 開發的特點,包含:
講了這麼多,今天來快速進入一點點的實作階段,順便示範一下 ST 系列的開發生態系有多方便。
首先,最困難的就是要先準備一塊 ST 的開發板,這邊用的就是之後要實作的 B-U585I-IOT02A,然後,一切就大功告成了。(並沒有)
接著可以去 ST 的官網下載 STM32CubeMX 工具,如果剛接觸的人也可以下載 STM32CubeIDE,他擁有更完整的集合工具,但因為我習慣用自己的方式做,下面還是以 CubeMX 為主。
下載好以後打開 CubeMX,可以選擇不同的晶片或是開發板(如下兩張圖)
這邊直接選擇了使用 B-U585I-IOT02A 這塊開發板,如果選擇開發板作為模板時,會直接詢問你是否帶入 default setting,這邊也是先直接選擇帶入,完成後可以看到如下圖:
其中左邊的選單就會是各種可以直接選擇調整的硬體外設,而右邊就會是各種腳位圖,全部都可以透過 GUI 設定就能快速使用。
這邊就簡單啟用一下 USART1(如下圖,如果 default setting 下應該直接就啟用了)
接著到 Project Settiing 選擇檔名以及要輸出的格式,目前 CubeMX 提供輸出以下不同的編譯工具:
我習慣使用 CMake,因此接下來輸出 CMake 格式。
此時就能看到目標資料夾底下有輸出的模板檔案:
接著如果我要讓我的開發板透過 UART1 快速輸出 "Hello World!",只要先實現 syscalls.c 裡面的 io_putchar(int ch)
並且在 main()
中 printf
就能快速完成。
// 重新實現標準輸出
int __io_putchar(int ch)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
int main()
{
// 此處省略前面的各種 Hardware init.
printf("Hello World!\r\n");
while(1)
{
}
接著編譯以後燒錄就能夠看到大家都熟悉的 Helloworld 輸出了~
今天簡單分享了一下如何透過 STM32Cube 系列工具快速上手一塊 STM32 開發板,實際上相關的教學網路上很多也比這邊還詳細,而且最重要的一點是幾乎所有不同的晶片or開發板操作起來都大同小異,僅有少數功能比較複雜的會需要多費點心,這就是 STM32 系列強大的開發生態系。
那就先到這邊~各位看倌明天見~